package com.maozzi.common.util;

import com.maozzi.common.constant.CommonConstant;
import com.maozzi.common.constant.ErrorCodeConstant;
import com.maozzi.common.exception.BizException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.FileOutputStream;
import java.util.UUID;

/**
 * 文件工具类
 *
 * @author maozi
 */
@Slf4j
public class FileUtil {

    /**
     * 自定义获取文件名称，不取上传文件的名称避免重名
     *
     * @return 文件名
     */
    public static String getFileName() {
        return String.format("%s%s.png", System.currentTimeMillis(), UUID.randomUUID());
    }

    /**
     * 上传文件
     *
     * @param file     文件
     * @param fileName 文件名称
     * @return true - 成功
     */
    public static Boolean uploadFile(MultipartFile file, String fileName) {
        String filePath = CommonConstant.UPLOAD_FILE;
        File targetDirectory = new File(filePath);
        if (!targetDirectory.exists()) {
            boolean mkdirs = targetDirectory.mkdirs();
            if (!mkdirs) {
                throw new BizException(ErrorCodeConstant.FILED, "服务器走神了");
            }
        }
        try (FileOutputStream out = new FileOutputStream(filePath + fileName)) {
            out.write(file.getBytes());
            out.flush();
            out.close();
            Runtime.getRuntime().exec("chmod 755 " + filePath);
            Runtime.getRuntime().exec("chmod 755 " + filePath + fileName);
            return Boolean.TRUE;
        } catch (Exception e) {
            //统一异常处理
            e.printStackTrace();
            return Boolean.FALSE;
        }
    }
}
